]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
4 years agoHC: Do not set icon theme from gnome-icon-theme-extra
Jakub Steiner [Thu, 17 Mar 2022 08:35:50 +0000 (09:35 +0100)]
HC: Do not set icon theme from gnome-icon-theme-extra

- High contrast icons are regular symbolic icons

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2414

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2243>

4 years agoUpdate Occitan translation
Quentin PAGÈS [Mon, 28 Mar 2022 19:21:02 +0000 (19:21 +0000)]
Update Occitan translation

4 years agocalendar: Fix alignment of world clocks header in RTL
Yosef Or Boczko [Fri, 11 Mar 2022 10:10:24 +0000 (12:10 +0200)]
calendar: Fix alignment of world clocks header in RTL

Signed-off-by: Yosef Or Boczko <yoseforb@gmail.com>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2240>

4 years agoRevert "shell/app: Do not try to activate OR windows"
Florian Müllner [Sun, 20 Mar 2022 18:15:58 +0000 (19:15 +0100)]
Revert "shell/app: Do not try to activate OR windows"

Now that shell_app_get_windows() itself filters out OR windows, this is
no longer needed.

This reverts commit f9037f5889801c80d15ee3dc45c9a9f8cc57feba.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5233

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2252>

4 years agoshell/app: Do not include OR windows in get_windows()
Florian Müllner [Sun, 20 Mar 2022 18:15:58 +0000 (19:15 +0100)]
shell/app: Do not include OR windows in get_windows()

We started tracking all windows to make sure the assumption that any
window can be match to an app holds. It is not expected however to
ever represent OR windows in the UI, so it seems better to exclude
them from get_windows() instead of expecting everyone to filter the
return value themselves.

(The returned list still includes "uninteresting" windows like attached
dialogs, which can be important for cases like the correct MRU order in
alt-tab)

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5233

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2252>

4 years agost/theme-node: Default to right text-align in RTL
Florian Müllner [Sun, 20 Mar 2022 14:22:31 +0000 (15:22 +0100)]
st/theme-node: Default to right text-align in RTL

When neither the theme node itself nor any of its parents specifies
an explicit text direction, we default to aligning to the left.

That's a good default for LTR locales, but for RTL aligning to the
right is a better one.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2247>

4 years agomessageList: Center-align close button vertically
Florian Müllner [Fri, 25 Mar 2022 16:11:28 +0000 (17:11 +0100)]
messageList: Center-align close button vertically

Otherwise it may end up stretched when using larger text.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2257>

4 years agoshellDBus: Actually make ScreenTransitionAsync async
Marco Trevisan (Treviño) [Mon, 28 Mar 2022 13:25:41 +0000 (15:25 +0200)]
shellDBus: Actually make ScreenTransitionAsync async

We called such function async but we didn't awaited for the
checkInvocation result in the proper way.

So on failure the shell would report an unhandled promise rejection.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2258>

4 years agoUpdate Russian translation
Aleksandr Melman [Sun, 27 Mar 2022 12:08:21 +0000 (12:08 +0000)]
Update Russian translation

4 years agoUpdate Serbian translation
Марко Костић [Sat, 26 Mar 2022 22:28:43 +0000 (22:28 +0000)]
Update Serbian translation

4 years agoUpdate Dutch translation
Nathan Follens [Fri, 25 Mar 2022 11:18:49 +0000 (11:18 +0000)]
Update Dutch translation

4 years agoUpdate Latvian translation
Rūdolfs Mazurs [Thu, 24 Mar 2022 20:48:57 +0000 (20:48 +0000)]
Update Latvian translation

4 years agoUpdate British English translation
Bruce Cowan [Thu, 24 Mar 2022 13:22:26 +0000 (13:22 +0000)]
Update British English translation

4 years agoUpdate Brazilian Portuguese translation
Matheus Barbosa [Thu, 24 Mar 2022 09:20:12 +0000 (09:20 +0000)]
Update Brazilian Portuguese translation

4 years agoUpdate Slovak translation
Dušan Kazik [Wed, 23 Mar 2022 14:44:30 +0000 (14:44 +0000)]
Update Slovak translation

4 years agoUpdated Lithuanian translation
Aurimas Černius [Tue, 22 Mar 2022 19:14:16 +0000 (21:14 +0200)]
Updated Lithuanian translation

4 years agoUpdate Slovenian translation
Matej Urbančič [Tue, 22 Mar 2022 06:37:36 +0000 (06:37 +0000)]
Update Slovenian translation

4 years agodateMenu: Limit timezone offset hours to integers
Raghuveer Kasaraneni [Mon, 21 Mar 2022 18:24:25 +0000 (19:24 +0100)]
dateMenu: Limit timezone offset hours to integers

If the timezone offset calculation in the World Clocks contains non-zero
minutes, then a decimal Hours value is being displayed. Limit the Hours value
to integers by using Math.floor().

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2255>

4 years agoUpdate Swedish translation
Anders Jonsson [Mon, 21 Mar 2022 18:51:08 +0000 (18:51 +0000)]
Update Swedish translation

4 years agoUpdate Polish translation
Piotr Drąg [Mon, 21 Mar 2022 16:38:28 +0000 (17:38 +0100)]
Update Polish translation

4 years agoUpdate Portuguese translation
Hugo Carvalho [Mon, 21 Mar 2022 16:33:17 +0000 (16:33 +0000)]
Update Portuguese translation

4 years agoUpdate Bulgarian translation
Alexander Shopov [Mon, 21 Mar 2022 12:57:57 +0000 (12:57 +0000)]
Update Bulgarian translation

4 years agoUpdate Croatian translation
Goran Vidović [Mon, 21 Mar 2022 11:52:44 +0000 (11:52 +0000)]
Update Croatian translation

4 years agoUpdate Turkish translation
Emin Tufan Çetin [Mon, 21 Mar 2022 10:41:14 +0000 (10:41 +0000)]
Update Turkish translation

4 years agoUpdated Czech translation
Marek Černocký [Mon, 21 Mar 2022 08:43:19 +0000 (09:43 +0100)]
Updated Czech translation

4 years agoUpdate Italian translation
Milo Casagrande [Mon, 21 Mar 2022 08:31:00 +0000 (08:31 +0000)]
Update Italian translation

4 years agoUpdate Galician translation
Fran Dieguez [Mon, 21 Mar 2022 08:02:48 +0000 (08:02 +0000)]
Update Galician translation

4 years agoUpdate Ukrainian translation
Yuri Chornoivan [Mon, 21 Mar 2022 06:30:35 +0000 (06:30 +0000)]
Update Ukrainian translation

4 years agoUpdate Catalan translation
Jordi Mas [Mon, 21 Mar 2022 06:27:52 +0000 (07:27 +0100)]
Update Catalan translation

4 years agoUpdate Hungarian translation
Balázs Úr [Mon, 21 Mar 2022 00:20:46 +0000 (00:20 +0000)]
Update Hungarian translation

4 years agolayout: Check again for primary monitor after startup animation idle
13r0ck [Tue, 1 Feb 2022 20:04:19 +0000 (13:04 -0700)]
layout: Check again for primary monitor after startup animation idle

On some hardware combinations the display can be known, then unknown again. Meaining that
when the update monitors function is called it will have a value, then be called again
setting this.primaryMonitor to null. If the timing is just right gnome shell will
loadBackground, then by the time the animation is ready the monitor will be gone,
thus methods will be called on a null value. This adds more checks for a valid
primary monitor, and wont play the animation until the system is idle AND has a valid
priamry monitor.

Fixes: #5003
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2144>

4 years agoappDisplay: Home and End keys for app grid navigation
Anupam Kumar [Sun, 13 Mar 2022 08:18:11 +0000 (08:18 +0000)]
appDisplay: Home and End keys for app grid navigation

Include Home and End keys for consistent behaviour with respect to
overview navigation.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2241>

4 years agodateMenu: Mark string for translation
Florian Müllner [Sat, 19 Mar 2022 20:15:50 +0000 (21:15 +0100)]
dateMenu: Mark string for translation

T_() is a convenience shortcut for looking up a string from the
locale defined by LC_TIME, but it isn't recognized as a gettext
keyword. To do that, we also have to wrap the string in N_() or
NC_().

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2246>

4 years agoswitchMonitor: Fix switching configuration
Florian Müllner [Sat, 19 Mar 2022 15:53:59 +0000 (16:53 +0100)]
switchMonitor: Fix switching configuration

Since commit 37271ffe709fc957, we pass an explicit `switchType` instead
of the selected item's index to select a configuration. Alas, the item
use `switchMode` as property name, so we always end up passing `undefined`.

Change both to `configType` which matches the API on the other end.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5217

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2245>

4 years agooverview: Remove desktop fade logic
Daniel van Vugt [Thu, 17 Mar 2022 10:08:48 +0000 (18:08 +0800)]
overview: Remove desktop fade logic

It existed to fade out/in `nautilus-desktop` for the overview, but it only
ever worked for X11 sessions (`Meta.WindowType.DESKTOP`) and
`nautilus-desktop` no longer exists anyway.

While I had suggested extending it in the past (!1395), that work was
never finished and since then the DING extension has implemented its
own visibility toggling. There seems little value in keeping the old
fade logic around in gnome-shell. Removing it actually fixes a bug with
DING (https://launchpad.net/bugs/1965072).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2244>

4 years agoappDisplay: Avoid double slash when creating default folders
Adam Williamson [Tue, 15 Mar 2022 20:25:16 +0000 (13:25 -0700)]
appDisplay: Avoid double slash when creating default folders

Creating these default folders still doesn't work. After some
investigation I found that's because the template we use for
the path when creating the `child` `Gio.Settings` instance
results in a double slash - it comes out as e.g.
/org/gnome/desktop/app-folders//folders/Utilities/ . dconf does
not gracefully handle this as many other things that handle
paths do, it considers it a programmer error. It results in
error messages like:

dconf_changeset_set: assertion 'dconf_is_path (path, NULL)' failed

which is slightly confusing. Anyway, we fix it by removing a
slash from the template.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2242>

4 years agowindowPreview: Avoid LEAVE events triggered by grab of our own StButton
Jonas Dreßler [Mon, 7 Mar 2022 11:14:52 +0000 (12:14 +0100)]
windowPreview: Avoid LEAVE events triggered by grab of our own StButton

Since the ClutterGrab rework, grabbing properly emits crossing events.

StButtons take a ClutterGrab as soon as they are pressed, so pressing
the close StButton of the WindowPreview takes a grab and causes a
LEAVE+key-focus-out event getting sent to the WindowPreview. This in
turn makes us hide our overlay (which the StButton is part of). We
automatically ungrab ClutterGrabs when hiding actors, so the StButtons
grab now gets released again, key-focus and hover state are updated
again and we emit an ENTER event to the WindowPreview. The preview now
tries show its overlay again and things explode because we re-enter the
mapping machinery.

For the LEAVE event we can break this cycle by detecting the GRAB_NOTIFY
crossing event of our own StButton and not reacting to that.

We should do the same for the key-focus-out event, but these don't pass
context information like a GRAB_NOTIFY flag yet, so just check the
current grab actor here.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3165

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2231>

4 years agopopupMenu: Fix usage of GRAB_NOTIFY ClutterEventFlag
Jonas Dreßler [Mon, 7 Mar 2022 11:11:06 +0000 (12:11 +0100)]
popupMenu: Fix usage of GRAB_NOTIFY ClutterEventFlag

Actually the flag gjs gives us here is called
Clutter.EventFlags.FLAG_GRAB_NOTIFY, so fix that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2231>

4 years agotheme: Minor screenshot UI fixes
Sam Hewitt [Fri, 25 Feb 2022 15:10:24 +0000 (11:40 -0330)]
theme: Minor screenshot UI fixes

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2215>

4 years agoUpdate Italian translation
Milo Casagrande [Thu, 17 Mar 2022 08:38:05 +0000 (08:38 +0000)]
Update Italian translation

4 years agoUpdate Finnish translation
Jiri Grönroos [Wed, 16 Mar 2022 14:37:28 +0000 (14:37 +0000)]
Update Finnish translation

4 years agoUpdate French translation
Charles Monzat [Mon, 14 Mar 2022 17:41:41 +0000 (17:41 +0000)]
Update French translation

4 years agoUpdate Croatian translation
Goran Vidović [Mon, 14 Mar 2022 12:36:59 +0000 (12:36 +0000)]
Update Croatian translation

4 years agoUpdate Croatian translation
Goran Vidović [Sun, 13 Mar 2022 15:38:55 +0000 (15:38 +0000)]
Update Croatian translation

4 years agoworkspace: Force creating new layout when there's no allocation yet
Jonas Dreßler [Wed, 9 Mar 2022 09:14:42 +0000 (10:14 +0100)]
workspace: Force creating new layout when there's no allocation yet

Commit ba23279f1fd3820fb81570b1b4a03048e5a7a3bc was aimed at fixing a
bug where the layout is frozen so early that we don't have an existing
one to re-use, because no allocation cycle happened yet. It tried to fix
that by forcing the creation of a layout when needsLayout === true,
this turned out to be a bit too much, as it also forced creating a new
layout when the layout was frozen after closing a window (which would
set needsLayout to true).

To fix this regression and still avoid reintroducing the bug the
previous commit fixed, tighten the check a bit and only force creating
the new layout when there's no allocation yet. This makes freezing the
layout after closing a window work again.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2236>

4 years agomagnifier: Update zoom region right after enabling the magnifier
Jonas Dreßler [Tue, 8 Mar 2022 11:55:00 +0000 (12:55 +0100)]
magnifier: Update zoom region right after enabling the magnifier

We want the zoom region to always be where the mouse cursor is, so make
sure to update it initially, too.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2234>

4 years agomagnifier: Properly hide the second (real) cursor
Jonas Dreßler [Tue, 8 Mar 2022 11:50:03 +0000 (12:50 +0100)]
magnifier: Properly hide the second (real) cursor

The magnifier uses a PointerWatcher (which is based on a simple timeout
source) to update the zoom region based on the current mouse cursor
position 60 times a second. When updating the zoom region, it would also
hide mutters cursor using meta_cursor_tracker_set_pointer_visible().

Since a few months, mutter has decoupled the handling of input events
from the monitor refresh rate though, which means it's no longer
guaranteed that the cursor changes only 60 times a second (on higher
refresh rate monitors it actually never was). This means mutter might
show the cursor more often than 60 times a second, while we hide it only
60 times a second, leading to a flickering second cursor.

To fix this, implement the cursor-hiding by listening to
MetaCursorTrackers visibility-changed signal, and immediately hiding the
cursor again when it's shown.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2234>

4 years agoworkspaceAnimation: Get time outside of the animation-complete callback
Jonas Dreßler [Mon, 7 Mar 2022 14:34:25 +0000 (15:34 +0100)]
workspaceAnimation: Get time outside of the animation-complete callback

We want to use the current event time for activating the workspace, and
this time is only available when calling global.get_current_time() or
Clutter.get_current_event_time() from the context of an event handler.

So instead of trying to get that time when the animation has finished
from the onComplete() handler, get it before and store it as a variable
to use in the onComplete() handler later.

This fixes an error message when switching workspaces using the swipe
gesture where MetaWorkspace complains about the 0-timestamp we pass it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2233>

4 years agowindowManager: Change unfullscreen mode to NORMAL
Ivan Molodetskikh [Sun, 6 Mar 2022 12:03:29 +0000 (15:03 +0300)]
windowManager: Change unfullscreen mode to NORMAL

The unfullscreen action doesn't make sense in other modes. In the
overview in particular it also prevents clicking on the top bar items on
a workspace with a fullscreen client.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2227>

4 years agoUpdate Hungarian translation
Balázs Úr [Sun, 13 Mar 2022 00:00:30 +0000 (00:00 +0000)]
Update Hungarian translation

4 years agoBump version to 42.0
Florian Müllner [Sat, 12 Mar 2022 16:00:56 +0000 (17:00 +0100)]
Bump version to 42.0

Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2239>

4 years agoUpdate Japanese translation
sicklylife [Sat, 12 Mar 2022 10:42:11 +0000 (10:42 +0000)]
Update Japanese translation

4 years agoUpdate Japanese translation
sicklylife [Sat, 12 Mar 2022 09:45:56 +0000 (09:45 +0000)]
Update Japanese translation

4 years agoUpdate Japanese translation
純 小山田 [Sat, 12 Mar 2022 09:43:57 +0000 (09:43 +0000)]
Update Japanese translation

4 years agoappDisplay: Fix a typo in the DEFAULT_FOLDERS definition
Adam Williamson [Thu, 10 Mar 2022 02:13:40 +0000 (18:13 -0800)]
appDisplay: Fix a typo in the DEFAULT_FOLDERS definition

This causes a crash because when we look for 'categories' later
for this entry, it's undefined.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2238>

4 years agoappDisplay: Fix folder loop in `_ensureDefaultFolders`
Adam Williamson [Thu, 10 Mar 2022 00:12:36 +0000 (16:12 -0800)]
appDisplay: Fix folder loop in `_ensureDefaultFolders`

In testing on Fedora, gnome-shell crashes here:

JS ERROR: TypeError: DEFAULT_FOLDERS[folder] is undefined

This needs to be a "for of" loop, not a "for in" loop, because
`folders` is an array of the hash's keys, not the hash itself.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2238>

4 years agokeyboard: Prevent OSK key buttons from creating grabs
Carlos Garnacho [Wed, 9 Mar 2022 22:32:30 +0000 (23:32 +0100)]
keyboard: Prevent OSK key buttons from creating grabs

In a very un-StButton fashion, OSK keys are not interested in
altering the current focus state, as otherwise pressing those
will trigger a grab that will alter key focus, so the generated
key or IM state events will not be handled by the actor that
originally had the focus as long as the OSK key is pressed.

Despite being StButtons, OSK keys do already perform their own
press/release handling with internal state tracking, so it is
not a big stretch to simply consume the events, and update the
:active pseudo-class manually.

This makes OSK keys still look and behave as usual, but without
any grabbing shenanigans that might affect the focus state. This
makes all OSK keys work again.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4986
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2237>

4 years agograbHelper: Special case event funneling towards the OSK
Carlos Garnacho [Wed, 9 Mar 2022 22:11:03 +0000 (23:11 +0100)]
grabHelper: Special case event funneling towards the OSK

In the case of bringing up the OSK while there is a grab (like, every
GNOME Shell entry), we used to special case event capturing so events
directed to the OSK would be let through.

When Clutter.Grab came around, events would be propagated only within
the actor hierarchy that holds the grab, which rendered this special
case just as useless as the OSK while a grab was hold. Since it wouldn't
be part of the grab hierarchy, clicking on the OSK would do nothing.

In order to let the OSK handle events, double down on the special case
and let it forward the event directly to the actor under the device,
instead of trying to let it through somehow. Since the actor under the
device are usually OSK buttons in this case, we don't need further
propagation to make it work, which makes the OSK functional again while
the shell holds a grab.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2237>

4 years agoUpdate Kazakh translation
Baurzhan Muftakhidinov [Sat, 12 Mar 2022 04:44:44 +0000 (04:44 +0000)]
Update Kazakh translation

4 years agoUpdate Serbian translation
Марко Костић [Fri, 11 Mar 2022 17:07:16 +0000 (17:07 +0000)]
Update Serbian translation

4 years agoUpdate Hebrew translation
Yosef Or Boczko [Fri, 11 Mar 2022 09:50:49 +0000 (09:50 +0000)]
Update Hebrew translation

4 years agoUpdate Russian translation
Ivan Molodetskikh [Wed, 9 Mar 2022 21:26:28 +0000 (21:26 +0000)]
Update Russian translation

4 years agoUpdate German translation
Tim Sabsch [Tue, 8 Mar 2022 20:38:40 +0000 (20:38 +0000)]
Update German translation

4 years agointrospect: Add WindowsChanged signal
Cenk Uluisik [Sun, 6 Mar 2022 18:32:48 +0000 (19:32 +0100)]
introspect: Add WindowsChanged signal

The screencast portal supports recording a single window,
and presents a list of open windows when that option is
selected. To allow updating that list when windows are
opened or closed, add a new "WindowsChanged" signal that
the portal can listen to.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2229>

4 years agoUpdate Friulian translation
Fabio Tomat [Tue, 8 Mar 2022 04:48:14 +0000 (04:48 +0000)]
Update Friulian translation

4 years agoBump version to 42.rc
Florian Müllner [Mon, 7 Mar 2022 14:41:34 +0000 (15:41 +0100)]
Bump version to 42.rc

Update NEWS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2232>

4 years agoUpdate Polish translation
Piotr Drąg [Sun, 6 Mar 2022 14:16:26 +0000 (14:16 +0000)]
Update Polish translation

4 years agoworkspace: Scale slots to current workspace size when layout is frozen
Sebastian Keller [Sat, 18 Sep 2021 15:01:21 +0000 (17:01 +0200)]
workspace: Scale slots to current workspace size when layout is frozen

The transition from the overview freezes the workspace layout at the
start of the animation, which means that the calculated window slots
remain the same while the workspace itslef grows. This causes the
windows to appear slightly shrunk in comparison to the workspace and
shifted to the top left. This is especially noticeable during the
beginning of the animation when there is more weight on the slots than
the original window position and if there are not that many open
windows.

Unfreezing the layout for this transition is not possible, because it
would cause issues with newly opened windows abruptly changing the
layout when the animation happens after starting a new app.

This change instead tries to scale the frozen layout to the current
workspace size. While this is not entirely correct, because this scales
the spacing between the slots as well, it is still more accurate than
the completely unscaled slots.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4616
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1980>

4 years agosignalTracker: Explicitly register destroyable types
Florian Müllner [Sat, 5 Mar 2022 23:30:16 +0000 (00:30 +0100)]
signalTracker: Explicitly register destroyable types

We currently assume that any '::destroy' signal on a GObject type
has the semantics of the ClutterActor/GtkWidget signal, and should
therefore result in all signals being disconnected.

But we already have a case where the assumption doesn't hold: ShellWM
uses '::destroy' for the closing animation of windows, and the ShellWM
object itself remains very valid after the emission.

So rather than making assumptions about '::destroy', check objects
against a list of destroyable types that are explicitly registered
as such.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2226>

4 years agoworkspace: Don't freeze the layout when there's no layout yet
Jonas Dreßler [Mon, 31 Jan 2022 20:13:18 +0000 (21:13 +0100)]
workspace: Don't freeze the layout when there's no layout yet

On some touchpads/laptops, the swipe gesture to open the overview can be
performed so fast, that it starts and ends in between two frames. Now
when this happens, and the gesture ended with too little movement to
confidently say the user intended to open the overview, we'll close the
overview again.

While closing the overview, we freeze the layout of the Workspace in
order to avoid changes to windows messing with the animation. This means
that in the case described above, we freeze the layout even before the
first frame of the opening animation happens. No frames being drawn also
means no allocations happening, and since we create this._layout in
vfunc_allocate(), this means that on the first allocation cycle of the
overview we'll see this._layoutFrozen = true, but will also not have
a this._layout nor this._windowSlots.

This creates an annoying visual glitch where for a split second all
the windows disappear (overview is visible but no WindowPreviews get
allocated).

To fix this, force creating a layout on the first allocation cycle, even
if the layout is currently frozen.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2203>

4 years agopanel: Listen differently for button-press events
Jonas Dreßler [Sat, 5 Mar 2022 21:47:54 +0000 (22:47 +0100)]
panel: Listen differently for button-press events

In the panel we listen for button presses on the panel in order to start
a drag op of the adjacent maximized window. With the recent changes
removing the source detail of events from Clutter, we now can no longer
access buttonEvent.source, but instead need to use
ClutterStage.get_event_actor().

Since that function expects us to pass a ClutterEvent and not a
ClutterButtonEvent, let's listen for the "button-press-event" signal
instead of connecting to vfunc_button_press_event(). This will give us a
ClutterEvent we can work with.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2225>

4 years agooverviewControls: Do consider work area for HIDDEN state
Florian Müllner [Sat, 5 Mar 2022 12:42:21 +0000 (13:42 +0100)]
overviewControls: Do consider work area for HIDDEN state

While we don't want to position overview elements according to
the work area, it does apply in the session when the overview
is hidden. That is, we should take it into account for the HIDDEN
state, so that transitions from and to the overview are correct.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2223>

4 years agooverviewControls: Ignore work area again
Florian Müllner [Sat, 5 Mar 2022 12:14:19 +0000 (13:14 +0100)]
overviewControls: Ignore work area again

The work area is really the space that is available to application
windows. Applying it to the overview is therefore questionable,
in particular given that

 - X11 clients that affect struts aren't shown
 - elements added by extensions have other means
   to affect the overview layout

Not applying the work area to the overview also makes ignoring
actors' visibility for struts acceptable again: Assuming that
strut actors are only hidden when the monitor is in fullscreen,
freezing the work area instead of updating it for windows that
are fully obscured by a fullscreen windows makes perfect sense.

This reverts commits 81a1e294f8bd161 and 2b074882f44c32862e3.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2223>

4 years agoRevert "layout: Exclude hidden actors from struts"
Florian Müllner [Sat, 5 Mar 2022 12:06:59 +0000 (13:06 +0100)]
Revert "layout: Exclude hidden actors from struts"

The changes violated too many assumptions on the mutter
side. And even if those were addressed, changing the
work area when a window enters/leaves fullscreen isn't
great, because it will force an expensive relayout on
all other windows.

This reverts commit cd1102ff30b134e45e9b5ab48318e6a4eae03416.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2223>

4 years agoUpdate Swedish translation
Luna Jernberg [Sat, 5 Mar 2022 20:13:30 +0000 (20:13 +0000)]
Update Swedish translation

4 years agost: Generate shadows from the silhouette of the source texture
Daniel van Vugt [Fri, 16 Jul 2021 10:34:11 +0000 (18:34 +0800)]
st: Generate shadows from the silhouette of the source texture

As first mentioned in commit 672171093, the CSS spec defines shadow
colors independently from the colors casting the shadow. It's not
a physical light simulation so a shadow is allowed to be a different
color from texture casting it.

This means we only care about the shape of the source where alpha
values of zero are adjacent to alpha values of non-zero. And all such
non-zero pixels should be treated as fully opaque for the purpose of
shadow generation. While this would be wrong for a physical light
simulation it does allow us to cast shadows around semi-translucent
shapes and better support CSS.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4477
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1918>

4 years agoworkspaceThumbnail: Use transient object for connecting some signals
Jonas Ådahl [Fri, 4 Mar 2022 21:52:29 +0000 (22:52 +0100)]
workspaceThumbnail: Use transient object for connecting some signals

We want to connect and disconnect a bunch of signals when showing/hiding
the worskpace thumbnails. To make this easy, use a transient object that
we tie to these signal handlers.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2220>

4 years agosignalTracker: Add TransientSignalHolder class
Florian Müllner [Fri, 4 Mar 2022 22:32:24 +0000 (23:32 +0100)]
signalTracker: Add TransientSignalHolder class

There are cases where we want to connect to a number of signals
for the lifetime of an object, but also other signals for a
limited period (say: between show and hide).

It is currently not possible to use disconnectObject() for the
latter, because it will disconnect all signals.

To address this use case, add a small class that can be used as
a transient signal holder, while still benefiting from autocleanup
by proxying the real owner.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2221>

4 years agosignalTracker: Use connect_after to track 'destroy'
Florian Müllner [Fri, 4 Mar 2022 22:34:59 +0000 (23:34 +0100)]
signalTracker: Use connect_after to track 'destroy'

The 'destroy' signal currently doesn't work with connectObject(),
because the handler is only connected after the signal tracker's
own destroy handler, which disconnects all handlers.

Address this by using connect_after for the cleanup handler, so
that other destroy handlers run before it (unless they also use
ConnectFlags.AFTER, but well *shrug*).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2221>

4 years agoci: Cover more node types in check-potfiles
Florian Müllner [Fri, 4 Mar 2022 23:58:13 +0000 (00:58 +0100)]
ci: Cover more node types in check-potfiles

gjs enabled support for static class blocks and class fields, so
adjust the script to not trip over those nodes when we start
using them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2221>

4 years agoworkspaceThumbnail: Remove unused properties
Florian Müllner [Fri, 4 Mar 2022 22:55:57 +0000 (23:55 +0100)]
workspaceThumbnail: Remove unused properties

Those aren't used anymore since the switch to connectObject().

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2222>

4 years agoremoteAccess: Hide indicator after a timeout
Jonas Ådahl [Thu, 27 Jan 2022 09:48:59 +0000 (10:48 +0100)]
remoteAccess: Hide indicator after a timeout

In order to make very short screen capture sessions more visible, let
the indicator remain visible, but a bit greyed out, for some seconds.
This makes it more obvious something was just capturing the screen.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2132>

4 years agoci: Bump mutter CI image
Jonas Ådahl [Fri, 4 Mar 2022 16:46:53 +0000 (17:46 +0100)]
ci: Bump mutter CI image

It's needed to make mutter build again.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2132>

4 years agoUpdate Finnish translation
Jiri Grönroos [Fri, 4 Mar 2022 20:16:39 +0000 (20:16 +0000)]
Update Finnish translation

4 years agojs: Use (dis)connectObject()
Florian Müllner [Sun, 15 Aug 2021 22:36:59 +0000 (00:36 +0200)]
js: Use (dis)connectObject()

Start using the new methods to simplify signal cleanup. For now,
focus on replacing existing cleanups; in most cases this means
signals connected in the constructor and disconnected on destroy,
but also other cases with a similarly defined lifetime (say: from
show to hide).

This doesn't change signal connections that only exist for a short
time (say: once), handlers that are connected on-demand (say: the
first time a particular method is called), or connections that
aren't tracked (read: disconnected) at all.

We will eventually replace the latter with connectObject() as
well - especially from actor subclasses - but the changeset is
already big enough as-is :-)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1953>

4 years agosignalTracker: Provide monkey-patching for (dis)connectObject()
Florian Müllner [Sun, 15 Aug 2021 22:01:40 +0000 (00:01 +0200)]
signalTracker: Provide monkey-patching for (dis)connectObject()

The module exports a `addObjectSignalMethods()` method that extends
the provided prototype with `connectObject()` and `disconnectObject()`
methods.

In its simplest form, `connectObject()` looks like the regular
`connect()` method, except for an additional parameter:

```js
    this._button.connectObject('clicked',
        () => this._onButtonClicked(), this);
```

The additional object can be used to disconnect all handlers on the
instance that were connected with that object, similar to
`g_signal_handlers_disconnect_by_data()` (which cannot be used
from introspection).

For objects that are subclasses of Clutter.Actor, that will happen
automatically when the actor is destroyed, similar to
`g_signal_connect_object()`.

Finally, `connectObject()` allows to conveniently connect multiple
signals at once, similar to `g_object_connect()`:

```js
    this._toggleButton.connect(
        'clicked', () => this._onClicked(),
        'notify::checked', () => this._onChecked(), this);
```

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1953>

4 years agotheme: Fixes for oversights in :rtl
Sam Hewitt [Wed, 23 Feb 2022 17:45:59 +0000 (14:15 -0330)]
theme: Fixes for oversights in :rtl

  - fix padding issue uncovered in #5123
  - fix RTL padding and margin quirks in popovers
  - fix incorrect padding in RTL in message list notifications

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2212>

4 years agoappDisplay: Create default folders on start
Florian Müllner [Wed, 2 Mar 2022 13:33:11 +0000 (14:33 +0100)]
appDisplay: Create default folders on start

The default folders used to be created by gnome-software, as that was
where folder management used to be implemented. Since then, folder
management via drag and drop was implemented in the shell, and the
gnome-software code was removed.

The only bit that still involves gnome-software are the default folders
that are created on first run. Given that everything else has moved to
the shell, it makes sense to take over that part as well.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4948

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2110>

4 years agost: Move StWidget away from clutter_event_get_source()
Carlos Garnacho [Fri, 25 Feb 2022 15:13:16 +0000 (16:13 +0100)]
st: Move StWidget away from clutter_event_get_source()

Ask the stage about the device actor instead for hover tracking.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2216>

4 years agost: Move StEntry away from clutter_event_get_source()
Carlos Garnacho [Fri, 25 Feb 2022 15:11:54 +0000 (16:11 +0100)]
st: Move StEntry away from clutter_event_get_source()

Ask the stage about the device actor instead. Since leaving the
StEntry also means leaving the contained ClutterText, the checks
on LEAVE can be just removed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2216>

4 years agost: Move StButton away from clutter_event_get_source()
Carlos Garnacho [Fri, 25 Feb 2022 15:11:09 +0000 (16:11 +0100)]
st: Move StButton away from clutter_event_get_source()

Ask the stage about the device actor instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2216>

4 years agosearchController: Avoid event.set_source() API
Carlos Garnacho [Fri, 25 Feb 2022 12:10:53 +0000 (13:10 +0100)]
searchController: Avoid event.set_source() API

It does not make sense that the target actor is both destinatary
and content of the events being sent, so this API call is going away.

Since the event can be sent entirely unmodified (more so, it will
become immutable/readonly in the future), avoid creating a copy
since it does not matter sending one or other struct.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2216>

4 years agosearchController: Query stage for target actor instead of event.get_source()
Carlos Garnacho [Fri, 25 Feb 2022 12:10:30 +0000 (13:10 +0100)]
searchController: Query stage for target actor instead of event.get_source()

Events are going to stop containing the destinatary, so stop using this
API. Querying the stage is equivalent and ensured to be up-to-date.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2216>

4 years agopopupMenu: Query stage for target actor instead of event.get_source()
Carlos Garnacho [Fri, 25 Feb 2022 12:09:33 +0000 (13:09 +0100)]
popupMenu: Query stage for target actor instead of event.get_source()

Events are going to stop containing the destinatary, so stop using this
API. Querying the stage is equivalent and ensured to be up-to-date.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2216>

4 years agokeyboard: Query stage for target actor instead of event.get_source()
Carlos Garnacho [Fri, 25 Feb 2022 12:09:17 +0000 (13:09 +0100)]
keyboard: Query stage for target actor instead of event.get_source()

Events are going to stop containing the destinatary, so stop using this
API. Querying the stage is equivalent and ensured to be up-to-date.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2216>

4 years agograbHelper: Query stage for target actor instead of event.get_source()
Carlos Garnacho [Fri, 25 Feb 2022 12:07:49 +0000 (13:07 +0100)]
grabHelper: Query stage for target actor instead of event.get_source()

Events are going to stop containing the destinatary, so stop using this
API. Querying the stage is equivalent and ensured to be up-to-date.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2216>

4 years agodash: Fix drag placeholder position in RTL
Florian Müllner [Sat, 26 Feb 2022 17:35:47 +0000 (18:35 +0100)]
dash: Fix drag placeholder position in RTL

The position corresponds to a child index, which means it must
be mirrored when starting to count from the right.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4574

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2219>

4 years agotheme: Fixes to regressions in app grid
Sam Hewitt [Tue, 15 Feb 2022 16:00:51 +0000 (12:30 -0330)]
theme: Fixes to regressions in app grid

- fixes dash radii and spacing
- fixes running dot indicator margins
- fixes loss of mouse interaction below dash
- fixes launcher icon size issues
- fixes search padding & margin problems on low-resolution displays
- fixes with inconsistent sizing in app folders
- fixes app switcher hover state

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2185>

4 years agotheme: Fixes to regressions in app grid
Sam Hewitt [Tue, 15 Feb 2022 16:00:51 +0000 (12:30 -0330)]
theme: Fixes to regressions in app grid

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2185>

4 years agoUpdate Korean translation
Changwoo Ryu [Thu, 3 Mar 2022 12:45:22 +0000 (12:45 +0000)]
Update Korean translation